5436
11139
Οι απαντήσεις αυτής της ερώτησης είναι μια κοινοτική προσπάθεια. Επεξεργαστείτε τις υπάρχουσες απαντήσεις για να βελτιώσετε αυτήν την ανάρτηση. Προς το παρόν δεν δέχεται νέες απαντήσεις ή αλληλεπιδράσεις.
Έγραψα το λάθος σε ένα μήνυμα δέσμευσης.
Πώς μπορώ να αλλάξω το μήνυμα; Η δέσμευση δεν έχει προωθηθεί ακόμα. 
Τροποποίηση του πιο πρόσφατου μηνύματος δέσμευσης
git comm - τροποποίηση
θα ανοίξει τον επεξεργαστή σας, επιτρέποντάς σας να αλλάξετε το μήνυμα δέσμευσης της πιο πρόσφατης δέσμευσης. Επιπλέον, μπορείτε να ορίσετε το μήνυμα δέσμευσης απευθείας στη γραμμή εντολών με:
git comm - amend -m "Νέο μήνυμα δέσμευσης"
… Ωστόσο, αυτό μπορεί να κάνει τα μηνύματα δέσμευσης πολλαπλών γραμμών ή μικρές διορθώσεις πιο δύσκολο να εισαχθούν.
Βεβαιωθείτε ότι δεν έχετε πραγματοποιήσει αλλαγές στο αντίγραφο εργασίας πριν το κάνετε αυτό, διαφορετικά θα δεσμευτούν επίσης. (Οι μη σταδιακές αλλαγές δεν θα δεσμευτούν.)
Αλλαγή του μηνύματος μιας δέσμευσης που έχετε ήδη προωθήσει στον απομακρυσμένο κλάδο σας
Εάν έχετε ήδη ωθήσει τη δέσμευσή σας στον απομακρυσμένο κλάδο σας, τότε - μετά την τοπική τροποποίηση της δέσμευσής σας (όπως περιγράφεται παραπάνω) - θα χρειαστεί επίσης να πιέσετε τη δέσμευση με:
git push   - δύναμη
# Ή
git push   -f
Προειδοποίηση: η δύναμη-ώθηση θα αντικαταστήσει τον απομακρυσμένο κλάδο με την κατάσταση του τοπικού σας. Εάν υπάρχουν δεσμεύσεις στον απομακρυσμένο κλάδο που δεν έχετε στον τοπικό κλάδο, θα χάσετε αυτές τις δεσμεύσεις.
Προειδοποίηση: να είστε προσεκτικοί σχετικά με την τροποποίηση δεσμεύσεων που έχετε ήδη μοιραστεί με άλλα άτομα. Οι τροποποιητικές δεσμεύσεις ουσιαστικά τους ξαναγράφουν για να έχουν διαφορετικά αναγνωριστικά SHA, κάτι που δημιουργεί πρόβλημα εάν άλλα άτομα έχουν αντίγραφα της παλιάς δέσμευσης που έχετε ξαναγράψει. Όποιος έχει ένα αντίγραφο της παλιάς δέσμευσης θα πρέπει να συγχρονίσει την εργασία του με την πρόσφατα επανεγγραφείσα δέσμευσή σας, κάτι που μερικές φορές μπορεί να είναι δύσκολο, οπότε βεβαιωθείτε ότι συντονίζετε με άλλους όταν προσπαθείτε να ξαναγράψετε κοινόχρηστο ιστορικό δεσμεύσεων ή απλώς αποφύγετε την επανεγγραφή κοινών δεσμεύσεων εντελώς.
Εκτελέστε μια διαδραστική επαναφορά
Μια άλλη επιλογή είναι να χρησιμοποιήσετε διαδραστική επαναφορά.
Αυτό σας επιτρέπει να επεξεργαστείτε οποιοδήποτε μήνυμα θέλετε να ενημερώσετε ακόμα κι αν δεν είναι το πιο πρόσφατο μήνυμα.
Για να κάνετε μια σκουός Git, ακολουθήστε τα εξής βήματα:
// n είναι ο αριθμός των δεσμεύσεων έως την τελευταία δέσμευση που θέλετε να μπορείτε να επεξεργαστείτε
git rebase -i HEAD ~ n
Μόλις σκουριάσετε τις δεσμεύσεις σας - επιλέξτε το e / r για επεξεργασία του μηνύματος:
Σημαντική σημείωση σχετικά με τη διαδραστική επαναφορά
Όταν χρησιμοποιείτε το git rebase -i HEAD ~ n μπορεί να υπάρχουν περισσότερα από n δεσμεύσεις. Το Git θα "συλλέξει" όλες τις δεσμεύσεις στις τελευταίες δεσμεύσεις και, εάν υπήρχε μια συγχώνευση κάπου ανάμεσα σε αυτό το εύρος, θα δείτε επίσης όλες τις δεσμεύσεις, έτσι το αποτέλεσμα θα είναι n +.
Καλή συμβουλή:
Εάν πρέπει να το κάνετε για περισσότερα από ένα κλάδο και ενδέχεται να αντιμετωπίσετε διενέξεις κατά την τροποποίηση του περιεχομένου, ρυθμίστε το git rerere και αφήστε το Git να επιλύσει αυτόματα αυτές τις διενέξεις για εσάς.
Τεκμηρίωση
Εγχειρίδιο σελίδας git-commit (1)
Εγχειρίδιο σελίδας git-rebase (1)
Εγχειρίδιο σελίδας git-push (1)
|
git commit - τροποποίηση -μ "το νέο σας μήνυμα"
|
Εάν η δέσμευση που θέλετε να διορθώσετε δεν είναι η πιο πρόσφατη:
git rebase - διαδραστικό $ parent_of_flawed_commit
Εάν θέλετε να επιδιορθώσετε πολλές ελαττωματικές δεσμεύσεις, περάστε τον γονέα του παλαιότερου από αυτούς.
Θα εμφανιστεί ένας συντάκτης, με μια λίστα όλων των δεσμεύσεων από αυτήν που δώσατε.
Αλλάξτε το pick to reword (ή σε παλιές εκδόσεις του Git, για επεξεργασία) μπροστά από τυχόν δεσμεύσεις που θέλετε να επιδιορθώσετε.
Μόλις αποθηκεύσετε, το Git θα επαναλάβει τις αναφερόμενες δεσμεύσεις.
Για κάθε δέσμευση που θέλετε να επαναδιατυπώσετε, το Git θα σας αφήσει πίσω στον επεξεργαστή σας. Για κάθε δέσμευση που θέλετε να επεξεργαστείτε, το Git σας ρίχνει στο κέλυφος. Εάν είστε στο κέλυφος:
Αλλάξτε τη δέσμευση με όποιον τρόπο θέλετε.
git comm - τροποποίηση
git rebase - συνέχεια
Το μεγαλύτερο μέρος αυτής της ακολουθίας θα σας εξηγηθεί από την έξοδο των διαφόρων εντολών καθώς πηγαίνετε. Ειναι πολυ ευκολο; δεν χρειάζεται να το απομνημονεύσετε - απλώς θυμηθείτε ότι το git rebase - interactive σας επιτρέπει να διορθώσετε τις δεσμεύσεις ανεξάρτητα από το πόσο καιρό πριν ήταν.
Σημειώστε ότι δεν θα θέλετε να αλλάξετε δεσμεύσεις που έχετε ήδη προωθήσει. Ή ίσως το κάνετε, αλλά σε αυτήν την περίπτωση θα πρέπει να προσέχετε πολύ για να επικοινωνείτε με όλους όσοι μπορεί να έχουν κάνει τις δεσμεύσεις σας και να δουλέψουν πάνω τους. Πώς μπορώ να κάνω ανάκτηση / επανασυγχρονισμό αφού κάποιος σπρώξει μια επαναφορά ή επαναφορά σε δημοσιευμένο υποκατάστημα;
|
Για να τροποποιήσετε την προηγούμενη δέσμευση, πραγματοποιήστε τις αλλαγές που θέλετε και πραγματοποιήστε αυτές τις αλλαγές και, στη συνέχεια, εκτελέστε τις
git comm - τροποποίηση
Αυτό θα ανοίξει ένα αρχείο στο πρόγραμμα επεξεργασίας κειμένου που θα αντιπροσωπεύει το νέο σας μήνυμα δέσμευσης. Αρχίζει να συμπληρώνεται με το κείμενο από το παλιό μήνυμα δέσμευσης. Αλλάξτε το μήνυμα δέσμευσης όπως θέλετε και, στη συνέχεια, αποθηκεύστε το αρχείο και κλείστε τον επεξεργαστή σας για να ολοκληρώσετε.
Για να τροποποιήσετε την προηγούμενη δέσμευση και να διατηρήσετε το ίδιο μήνυμα καταγραφής, εκτελέστε
git comm - τροποποίηση -C HEAD
Για να διορθώσετε την προηγούμενη δέσμευση αφαιρώντας την εντελώς, εκτελέστε
επαναφορά git - σκληρό HEAD ^
Εάν θέλετε να επεξεργαστείτε περισσότερα από ένα μηνύματα δέσμευσης, εκτελέστε
git rebase -i HEAD ~ commit_count
(Αντικαταστήστε το commit_count με τον αριθμό των δεσμεύσεων που θέλετε να επεξεργαστείτε.) Αυτή η εντολή ξεκινά τον επεξεργαστή σας. Σημειώστε την πρώτη δέσμευση (αυτή που θέλετε να αλλάξετε) ως "επεξεργασία" αντί για "επιλογή" και, στη συνέχεια, αποθηκεύστε και βγείτε από τον επεξεργαστή σας. Πραγματοποιήστε την αλλαγή που θέλετε να πραγματοποιήσετε και, στη συνέχεια, εκτελέστε
git comm - τροποποίηση
git rebase - συνέχεια
Σημείωση: Μπορείτε επίσης να κάνετε "την αλλαγή που θέλετε" από το πρόγραμμα επεξεργασίας που άνοιξε το git commit - amend
|
Όπως ήδηαναφέρεται, το git comm - η τροποποίηση είναι ο τρόπος αντικατάστασης της τελευταίας δέσμευσης. Μια σημείωση: αν θέλετε να αντικαταστήσετε επίσης τα αρχεία, η εντολή θα ήταν
git commit -a - amend -m "Το νέο μήνυμα δέσμευσης"
|
Μπορείτε επίσης να χρησιμοποιήσετε το git filter-branch για αυτό.
git filter-branch -f --msg-filter "sed 's / errror / error /'" $ flawed_commit..HEAD
Δεν είναι τόσο εύκολο όσο ένα ασήμαντο git comm - τροποποιήστε, αλλά είναι ιδιαίτερα χρήσιμο, εάν έχετε ήδη κάποιες συγχωνεύσεις μετά το εσφαλμένο μήνυμα δέσμευσης.
Σημειώστε ότι αυτό θα προσπαθήσει να ξαναγράψει κάθε δέσμευση μεταξύ HEAD και του ελαττωματικού δεσμεύματος, οπότε θα πρέπει να επιλέξετε την εντολή msg-filter πολύ σοφά ;-)
|
Προτιμώ αυτόν τον τρόπο:
git comm --amend -c 
Διαφορετικά, θα υπάρξει μια νέα δέσμευση με ένα νέο αναγνωριστικό δέσμευσης.
|
Εάν χρησιμοποιείτε το εργαλείο Git GUI, υπάρχει ένα κουμπί που ονομάζεται Amend last commit. Κάντε κλικ σε αυτό το κουμπί και, στη συνέχεια, θα εμφανίσει τα τελευταία αρχεία και τα μηνύματά σας. Απλώς επεξεργαστείτε αυτό το μήνυμα και μπορείτε να το δεσμεύσετε με ένα νέο μήνυμα δέσμευσης.
Ή χρησιμοποιήστε αυτήν την εντολή από μια κονσόλα / τερματικό:
git commit -a - amend -m "Το νέο μήνυμα δέσμευσης"
|
Μπορείτε να χρησιμοποιήσετε το Git rebasing. Για παράδειγμα, εάν θέλετε να τροποποιήσετε ξανά τη δέσμευση bbc643cd, εκτελέστε
$ git rebase bbc643cd ^ - διαδραστικό
Στον προεπιλεγμένο επεξεργαστή, τροποποιήστε το "pick" to "edit" στη γραμμή του οποίου δεσμεύετε να θέλετε να τροποποιήσετε. Πραγματοποιήστε τις αλλαγές σας και στη συνέχεια πραγματοποιήστε τις
$ git add 
Τώρα μπορείτε να χρησιμοποιήσετε
$ git comm - τροποποίηση
για να τροποποιήσετε τη δέσμευση, και μετά από αυτό
$ git rebase - συνέχεια
για να επιστρέψετε στην προηγούμενη κεφαλή.
|
Εάν θέλετε μόνο να τροποποιήσετε το τελευταίο μήνυμα δέσμευσης, κάντε:
git comm - τροποποίηση
Αυτό θα σας αφήσει στο πρόγραμμα επεξεργασίας κειμένου και θα σας επιτρέψει να αλλάξετε το τελευταίο μήνυμα δέσμευσης.
Εάν θέλετε να αλλάξετε τα τρία τελευταία μηνύματα δέσμευσης, ή οποιοδήποτε από τα μηνύματα δέσμευσης έως αυτό το σημείο, δώστε το HEAD ~ 3 στην εντολή git rebase -i:
git rebase -i HEAD ~ 3
|
Εάν πρέπει να αλλάξετε ένα παλιό μήνυμα δέσμευσης σε πολλούς κλάδους (δηλ. Η δέσμευση με το εσφαλμένο μήνυμα υπάρχει σε πολλούς κλάδους) ίσως θέλετε να χρησιμοποιήσετε:
git filter-branch -f --msg-filter \
'sed "s /  /  / g"' - - όλα
Το Git θα δημιουργήσει έναν προσωρινό κατάλογο για επανεγγραφή και επιπλέον δημιουργία αντιγράφων ασφαλείας παλιών αναφορών σε refs / original /.
-f θα επιβάλει την εκτέλεση της λειτουργίας. Αυτό είναι απαραίτητο εάν ο προσωρινός κατάλογος υπάρχει ήδη ή εάν υπάρχουν ήδη αναφορές αποθηκευμένες στο refs / original. Εάν δεν συμβαίνει αυτό, μπορείτε να αφήσετε αυτήν τη σημαία.
- διαχωρίζει τις επιλογές κλάδου φίλτρου από τις επιλογές αναθεώρησης.
- όλοι θα φροντίσουν να ξαναγραφούν όλοι οι κλάδοι και οι ετικέτες.
Λόγω του αντιγράφου ασφαλείας των παλιών αναφορών σας, μπορείτε εύκολα να επιστρέψετε στην κατάσταση πριν εκτελέσετε την εντολή.
Ας πούμε, θέλετε να ανακτήσετε τον κύριό σας και να αποκτήσετε πρόσβαση σε αυτόν στον κλάδο old_master:
git checkout -b old_master refs / original / refs / heads / master
|
Χρήση
git comm - τροποποίηση
Για να το καταλάβετε λεπτομερώς, μια εξαιρετική ανάρτηση είναι 4. Επαναγράφοντας το Git History. Μιλά επίσης για το πότε να μην χρησιμοποιήσετε το git comm - τροποποίηση.
|
Εάν είναι η τελευταία σας δέσμευση, απλώς τροποποιήστε τη δέσμευση:
git comm --amend -o -m "Νέο μήνυμα δέσμευσης"
(Χρησιμοποιώντας τη σημαία -o (- μόνο) για να βεβαιωθείτε ότι αλλάζετε μόνο το μήνυμα δέσμευσης)
Εάν πρόκειται για μια δεσμευμένη δέσμευση, χρησιμοποιήστε την εκπληκτική διαδραστική επαναφορά:
git rebase -i @ ~ 9 # Εμφάνιση των τελευταίων 9 δεσμεύσεων σε πρόγραμμα επεξεργασίας κειμένου
Βρείτε τη δέσμευση που θέλετε, αλλάξτε το pick σε r (reword) και αποθηκεύστε και κλείστε το αρχείο. Εγινε!
Εκμάθηση μινιατούρας Vim (ή, πώς να κάνετε επανεκκίνηση με μόνο 8 πληκτρολογήσεις 3jcwrEscZZ):
Εκτελέστε το vimtutor εάν έχετε χρόνο
Το hjkl αντιστοιχεί στα πλήκτρα κίνησης ← ↓ ↑ →
Όλες οι εντολές μπορούν να προθεματοποιηθούν με ένα "εύρος", π.χ. Το 3j κινείται προς τα κάτω σε τρεις γραμμές
i για είσοδο σε λειτουργία εισαγωγής - το κείμενο που πληκτρολογείτε θα εμφανίζεται στο αρχείο
Esc ή Ctrlc για έξοδο από τη λειτουργία εισαγωγής και επιστροφή σε "κανονική" λειτουργία
για αναίρεση
Ctrlr για επανάληψη
dd, dw, dl για να διαγράψετε μια γραμμή, μια λέξη ή ένα γράμμα, αντίστοιχα
cc, cw, cl για αλλαγή γραμμής, λέξης ή γράμματος, αντίστοιχα (όπως το ddi)
yy, yw, yl για να αντιγράψετε ("yank") μια γραμμή, λέξη ή γράμμα, αντίστοιχα
p ή P για επικόλληση μετά ή πριν από την τρέχουσα θέση, αντίστοιχα
: wΕίσοδος για αποθήκευση (εγγραφή) ενός αρχείου
: q! Εισάγετε για έξοδο χωρίς αποθήκευση
: wqEnter ή ZZ για αποθήκευση και έξοδο
Εάν επεξεργάζεστε πολύ κείμενο, μετά μεταβείτε στη διάταξη πληκτρολογίου Dvorak, μάθετε να αγγίζετε και πληκτρολογείτε Vim. Αξίζει η προσπάθεια; Ναί.
ProTip ™: Μην φοβάστε να πειραματιστείτε με "επικίνδυνες" εντολές που ξαναγράφουν το ιστορικό * - Το Git δεν διαγράφει τις δεσμεύσεις σας για 90 ημέρες από προεπιλογή. μπορείτε να τα βρείτε στο reflog:
$ git reset @ ~ 3 # Επιστρέψτε τρεις δεσμεύσεις
$ git reflog
c4f708b HEAD @ {0}: reset: μετακίνηση σε @ ~ 3
2c52489 HEAD @ {1}: δέσμευση: περισσότερες αλλαγές
4a5246d HEAD @ {2}: δεσμεύστε: πραγματοποιήστε σημαντικές αλλαγές
e8571e4 HEAD @ {3}: δέσμευση: κάντε κάποιες αλλαγές
... νωρίτερα διαπράττει ...
Επαναφορά $ git 2c52489
... και επέστρεψες από εκεί που ξεκίνησες
* Προσέξτε για επιλογές όπως - σκληρό και - εξαιτίας της δύναμης - μπορούν να απορρίψουν δεδομένα.
* Επίσης, μην ξαναγράψετε το ιστορικό σε κλάδους στα οποία συνεργάζεστε.
|
Τροποποιώ
Έχεις δύοεπιλογές εδώ. Μπορείτε να κάνετε
git comm - τροποποίηση
αρκεί να είναι η τελευταία σας δέσμευση.
Διαδραστική επαναφορά
Διαφορετικά, εάν δεν είναι η τελευταία σας δέσμευση, μπορείτε να κάνετε μια διαδραστική επαναφορά,
git rebase -i [branched_from] [κατακερματισμός πριν από τη δέσμευση]
Στη συνέχεια, μέσα στην διαδραστική επαναφορά, απλά προσθέτετε επεξεργασία σε αυτήν τη δέσμευση. Όταν εμφανιστεί, κάντε μια εντολή git - τροποποιήστε και τροποποιήστε το μήνυμα δέσμευσης. Εάν θέλετε να επαναφέρετε πριν από αυτό το σημείο δέσμευσης, θα μπορούσατε επίσης να χρησιμοποιήσετε το git reflog και απλά να διαγράψετε αυτήν την δέσμευση. Τότε απλά κάνεις πάλι μια δέσμευση.
|
Εάν χρησιμοποιείτε το Git GUI, μπορείτε να τροποποιήσετε την τελευταία δέσμευση που δεν έχει προωθηθεί με:
Commit / Τροποποίηση τελευταίας δέσμευσης
|
Χρησιμοποιώ το Git GUI όσο περισσότερο μπορώ, και αυτό σας δίνει την επιλογή να τροποποιήσετε την τελευταία δέσμευση:
Επίσης, το git rebase -i origin / masteris είναι ένα ωραίο μάντρα που θα σας παρουσιάζει πάντα τις δεσμεύσεις που έχετε κάνει πάνω από το master και θα σας δώσει την επιλογή να τροποποιήσετε, να διαγράψετε, να αναδιατάξετε ή να σκουριάσετε. Δεν χρειάζεται να κατανοήσετε πρώτα αυτό το κατακερματισμό.
|
Ουάου, έτσι υπάρχουν πολλοί τρόποι για να το κάνουμε αυτό.
Ένας άλλος τρόπος για να γίνει αυτό είναι να διαγράψετε την τελευταία δέσμευση, αλλά διατηρήστε τις αλλαγές της, ώστε να μην χάσετε τη δουλειά σας. Στη συνέχεια, μπορείτε να κάνετε μια άλλη δέσμευση με το διορθωμένο μήνυμα. Αυτό θα μοιάζει με αυτό:
επαναφορά git - soft HEAD ~ 1
git commit -m "Νέο και διορθωμένο μήνυμα δέσμευσης"
Το κάνω πάντα αν ξεχάσω να προσθέσω ένα αρχείο ή να κάνω μια αλλαγή.
Θυμηθείτε να καθορίσετε το --soft αντί για - σκληρό, διαφορετικά θα χάσετε την εν λόγω δέσμευση εντελώς.
|
Για όσους αναζητούν GUI Windows / Mac για βοήθεια στην επεξεργασία παλαιότερων μηνυμάτων (δηλαδή όχι μόνο του πιο πρόσφατου μηνύματος), θα συνιστούσα το Sourcetree. Τα βήματα που ακολουθούν βρίσκονται κάτω από την εικόνα.
Για δεσμεύσεις που δεν έχουν προωθηθεί ακόμη σε τηλεχειριστήριο:
Βεβαιωθείτε ότι έχετε πραγματοποιήσει ή έχετε αποκρύψει όλες τις τρέχουσες αλλαγές (δηλ. Δεν υπάρχουν αρχεία στην καρτέλα "Κατάσταση αρχείου") - δεν θα λειτουργήσει διαφορετικά.
Στην καρτέλα "Log / History", κάντε δεξί κλικ στην καταχώριση με μια γειτονική γραμμή στο γράφημα που βρίσκεται κάτω από τις δεσμεύσεις που θέλετε να επεξεργαστείτε και επιλέξτε "Rebase children of  interactive ..."
Επιλέξτε ολόκληρη τη σειρά για ένα μήνυμα δέσμευσης που θέλετε να αλλάξετε (κάντε κλικ στη στήλη "Μήνυμα").
Κάντε κλικ στο κουμπί "Επεξεργασία μηνύματος".
Επεξεργαστείτε το μήνυμα όπως επιθυμείτε στο διάλογο που εμφανίζεται και, στη συνέχεια, κάντε κλικ στο OK.
Επαναλάβετε τα βήματα 3-4 εάν υπάρχουν άλλα μηνύματα δέσμευσης για αλλαγή.
Κάντε κλικ στο OK: Θα ξεκινήσει η επαναφορά. Εάν όλα είναι καλά, η έξοδος θα τελειώσει "Ολοκληρώθηκε με επιτυχία". ΣΗΜΕΙΩΣΗ: Μερικές φορές έχω δει αυτό να αποτυγχάνει με την αδυναμία δημιουργίας «project_path / .git / index.lock»: Υπάρχει αρχείο. κατά την προσπάθεια τροποποίησης πολλαπλών μηνυμάτων δέσμευσης ταυτόχρονα. Δεν είμαι σίγουρος τι ακριβώς είναι το ζήτημα ή αν θα επιδιορθωθεί σε μια μελλοντική έκδοση του Sourcetree, αλλά αν συμβεί αυτό θα συνιστούσα να τα επαναφέρετε ένα κάθε φορά (πιο αργό αλλά φαίνεται πιο αξιόπιστο).
... Ή ... για δεσμεύσεις που έχουν ήδη προωθηθεί:
Ακολουθήστε τα βήματα σε αυτήν την απάντηση, τα οποία είναι παρόμοια με τα παραπάνω, αλλά απαιτείται να εκτελεστεί μια περαιτέρω εντολή από τη γραμμή εντολών (git push origin  -f) για να πιέσετε το κλάδο. Θα συνιστούσα να τα διαβάσετε όλα και να εφαρμόσετε την απαραίτητη προσοχή!
|
Εάν θέλετε απλώς να επεξεργαστείτε την τελευταία δέσμευση, χρησιμοποιήστε:
git comm - τροποποίηση
ή
git comm - τροποποίηση -μ "ένα μήνυμα γραμμής"
Ωστόσο, εάν θέλετε να επεξεργαστείτε πολλές σειρές στη σειρά, θα πρέπει να χρησιμοποιήσετε την επαναφορά:
git rebase -i  μήνυμα
Αντί να επιλέξετε, πρέπει να γράψετε νέα λέξη. Μπορείτε να το κάνετε αυτό στο Vim πληκτρολογώντας το i. Αυτό σε κάνει να εισέλθεις στη λειτουργία εισαγωγής. (Βλέπετε ότι βρίσκεστε σε λειτουργία εισαγωγής με τη λέξη INSERT στο κάτω μέρος.) Για τις δεσμεύσεις που θέλετε να αλλάξετε, πληκτρολογήστε reword αντί για pick.
Στη συνέχεια, πρέπει να αποθηκεύσετε και να κλείσετε αυτήν την οθόνη. Το κάνετε αυτό πηγαίνοντας πρώτα στην «λειτουργία εντολής» πατώντας το πλήκτρο Escbut (μπορείτε να ελέγξετε αν βρίσκεστε σε λειτουργία εντολών εάν η λέξη ΕΙΣΑΓΩΓΗ στο κάτω μέρος έχει εξαφανιστεί) Στη συνέχεια, μπορείτε να πληκτρολογήσετε μια εντολή πληκτρολογώντας:. Η εντολή αποθήκευσης και τερματισμού είναι wq. Έτσι, αν πληκτρολογήσετε: wq είστε στο σωστό δρόμο.
Στη συνέχεια, ο Vim θα εξετάσει κάθε μήνυμα δέσμευσης που θέλετε να αναδιατυπώσετε και εδώ μπορείτε πραγματικά να αλλάξετε τα μηνύματα δέσμευσης. Αυτό θα το κάνετε μεταβαίνοντας στη λειτουργία εισαγωγής, αλλάζοντας το μήνυμα δέσμευσης, μεταβείτε στη λειτουργία εντολών και αποθηκεύστε και κλείστε. Κάνετε αυτό πέντε φορές και είστε εκτός Vim!
Στη συνέχεια, εάν έχετε ήδη σπρώξει τα λάθη σας, πρέπει να κάνετε push --force να τα αντικαταστήσετε. Θυμηθείτε ότι το git push --force είναι ένα πολύ επικίνδυνο πράγμα, οπότε βεβαιωθείτε ότι κανείς δεν τραβήχτηκε από τον διακομιστή, αφού προωθήσατε τα λάθη σας
Τώρα έχετε αλλάξει τα μηνύματα δέσμευσης!
(Όπως βλέπετε, δεν είμαι τόσο έμπειρος στο Vim, οπότε αν χρησιμοποιούσα το λάθος "lingo" για να εξηγήσω τι συμβαίνει, μη διστάσετε να με διορθώσετε!)
|
Μπορείτε να χρησιμοποιήσετε το git-rebase-reword
Έχει σχεδιαστεί για να επεξεργάζεται οποιαδήποτε δέσμευση (όχι μόνο τελευταία) με τον ίδιο τρόπο με τη δέσμευση - τροποποίηση
$ git rebase-reword 
Ονομάστηκε από την ενέργεια στο rebase interactive για να τροποποιήσει μια δέσμευση: "reword". Δείτε αυτήν την ανάρτηση και man-section διαδραστική λειτουργία-
Παραδείγματα:
$ git rebase-reword b68f560
$ git rebase-reword HEAD ^
|
Έχω προσθέσει τα ψευδώνυμα reci και recm για να το επαναλάβω (τροποποιήσω). Τώρα μπορώ να το κάνω με το git recm ή το git recm -m:
$ vim ~ / .gitconfig
[ψευδώνυμο]
......
cm = δέσμευση
reci = commit - τροποποίηση
recm = commit - τροποποίηση
......
|
Συνειδητοποίησα ότι είχα σπρώξει μια δέσμευση με ένα τυπογραφικό λάθος σε αυτό. Για να αναιρέσω, έκανα τα εξής:
git comm - amend -m "T-1000, προηγμένο πρωτότυπο"
git push - δύναμη
Προειδοποίηση: η ώθηση των αλλαγών σας θα αντικαταστήσει τον απομακρυσμένο κλάδο με τον τοπικό σας. Βεβαιωθείτε ότι δεν πρόκειται να αντικαταστήσετε κάτι που θέλετε να διατηρήσετε. Επίσης, να είστε προσεκτικοί όταν πιέζετε μια τροποποιημένη (επανεγγραφόμενη) δέσμευση εάν κάποιος άλλος μοιράζεται το υποκατάστημα μαζί σας, επειδή θα πρέπει να ξαναγράψουν το δικό τους ιστορικό εάν έχουν το παλιό αντίγραφο της δέσμευσης που μόλις ξαναγράψατε.
|
Μου αρέσει να χρησιμοποιώ τα εξής:
κατάσταση git
git add - όλα
git commit -am "Το μήνυμα πηγαίνει εδώ για την αλλαγή"
git pull <αρχικός κύριος>
git push <αρχικός κύριος>
|
Εάν δεν έχετε ωθήσει τον κωδικό στον απομακρυσμένο κλάδο σας (GitHub / Bitbucket), μπορείτε να αλλάξετε το μήνυμα δέσμευσης στη γραμμή εντολών όπως παρακάτω.
git comm - amend -m "Το νέο σας μήνυμα"
Εάν εργάζεστε σε ένα συγκεκριμένο υποκατάστημα κάντε το:
git comm --amend -m "BRANCH-NAME: νέο μήνυμα"
Εάν έχετε ήδη ωθήσει τον κωδικό με λάθος μήνυμα και πρέπει να είστε προσεκτικοί όταν αλλάζετε το μήνυμα. Δηλαδή, αφού αλλάξετε το μήνυμα δέσμευσης και προσπαθήσετε να το πιέσετε ξανά, καταλήγετε να αντιμετωπίζετε προβλήματα. Για να το κάνετε ομαλό, ακολουθήστε αυτά τα βήματα.
Παρακαλώ διαβάστε ολόκληρη την απάντησή μου πριν το κάνετε.
git comm --amend -m "BRANCH-NAME: το νέο σας μήνυμα"
git push -f origin BRANCH-NAME # Όχι βέλτιστη πρακτική. Διαβάστε παρακάτω γιατί;
Σημαντική σημείωση: Όταν χρησιμοποιείτε το force push απευθείας, ενδέχεται να καταλήξετε σε ζητήματα κώδικα που άλλοι προγραμματιστές εργάζονται στον ίδιο κλάδο. Επομένως, για να αποφύγετε αυτές τις συγκρούσεις, πρέπει να τραβήξετε τον κωδικό από το υποκατάστημα σας πριν κάνετε τη δύναμηΣπρώξτε:
git comm --amend -m "BRANCH-NAME: το νέο σας μήνυμα"
git pull origin BRANCH-NAME
git push -f προέλευσης BRANCH-NAME
Αυτή είναι η βέλτιστη πρακτική κατά την αλλαγή του μηνύματος δέσμευσης, εάν είχε ήδη προωθηθεί.
|
Δεν είναι η απάντηση που ψάχνετε; Περιηγηθείτε σε άλλες ερωτήσεις με ετικέτα git git-commit git-rewrite-history τροποποιήστε ή κάντε τη δική σας ερώτηση